package com.cool.shark.controller;

import com.cool.shark.pojo.dto.CarouselDTO;
import com.cool.shark.pojo.vo.CarouselVO;
import com.cool.shark.service.CarouselService;
import com.cool.shark.web.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
//import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

/**
 * @Name: CarouselController
 * @Author: 西风残叶
 * @Date: 2024/4/15 14:00
 * @Version: 1.0
 * @TODO: TODO
 */
@RestController
@Slf4j
@RequestMapping("/carousel")
public class CarouselController {
    @Autowired
    private CarouselService service;
    /**
     * 插入一个新的类别信息并返回所有类别列表
     *
     * @param name 类别的名称
     * @return JsonResult<List<CarouselVO>> 包含操作结果和类别列表的JSON结果对象
     */
    @GetMapping("/insert")
    public JsonResult<Void> insert(String name) {
        // 记录输入的类别名称
        log.info("name:{}",name);
        // 调用服务层方法，插入类别信息
        service.insert(name);
        // 获取所有类别列表
        return JsonResult.ok();
    }

    /**
     * 获取所有类别列表
     *
     * @return JsonResult<List<CarouselVO>> 包含操作结果和类别列表的JSON结果对象
     */
    @GetMapping("/list")
    public JsonResult<List<CarouselVO>> list() {
        // 获取所有类别列表
        List<CarouselVO> list = service.list();
        // 返回操作成功的结果和轮
        return JsonResult.ok(list);
    }
    /**
     * 删除指定ID的类别并返回更新后的类别列表
     *
     * @param id 要删除的类别的ID
     * @return JsonResult<List<CarouselVO>> 包含操作结果和更新后的类别列表的JSON结果
     */
    @GetMapping("/delete")
    public JsonResult<Void> delete(int id) {
        // 删除指定ID的类别
        service.delete(id);
        return JsonResult.ok();
    }
    /**
     * 更新类别信息
     *
     * @param carouselDTO 类别数据传输对象，包含需要更新的类别信息
     * @return 返回操作结果，如果操作成功，则返回一个空的JsonResult对象
     */
    @PostMapping("/update")
    public JsonResult<Void> update(@RequestBody CarouselDTO carouselDTO){
        // 记录接收到的类别信息
        log.info("接收到参数:{}",carouselDTO);
        // 调用服务层方法，执行更新操作
        service.update(carouselDTO);
        // 返回操作成功的结果
        return JsonResult.ok();
    }

}
